# # -*- coding: UTF8 -*-
##隐蔽验收检查内容的生成函数

import pandas as pd

from urls import *

def CHECK_PROJECTS(excel_file:str) -> dict:
    """
    excel_file:str:
        excel文件路径
    """
    
    DateFrame=pd.read_excel(excel_file,sheet_name="Sheet1",header=1)
    
    DateFrame.set_index("序号",inplace=True)

    DateFrame['检查项目']=DateFrame['检查项目'].apply(lambda x:str(x).split(','))

    CHECK_PROJECTS={}

    for x in range(DateFrame.shape[0]):
        
        CHECK_PROJECTS[DateFrame.iloc[x][0]]=DateFrame.iloc[x][1::].to_dict()
        
    return CHECK_PROJECTS

#读取excel生成内容

CHECK_PROJECTS = CHECK_PROJECTS(excel_file=TEMPLATES['隐蔽验收数据地址'])

class CheckProject:

    def __init__(self, project_information) -> None:

        self.project_information = project_information

    def JudegeISNULL(self, key):
        if key in self.project_information:
            return self.project_information[key]
        else:
            return ''

    def CheckItemWord1(self):

        if self.JudegeISNULL('厂家名称') and self.JudegeISNULL(
                '规格/型号') and self.JudegeISNULL('材料名称'):
            return f"1、根据施工图纸{self.project_information['施工图号']}内容," \
                   f"2、{self.project_information['检验批部位']}防水层采用" \
                   f"3、{self.project_information['厂家名称']}生产的{self.project_information['规格/型号']}的{self.project_information['材料名称']},符合设计要求及国家现行标准的有关规定; \n2、卷材防水层在转角处、施工缝等部位做法符合设计及施工规范要求; \n3、卷材防水层无空鼓、起泡、褶皱等缺陷,卷材铺贴顺序以及卷材细部处理等均符合设计及规范要求。"

        else:
            return '1、屋面结构防水层材料规格、型号、厚度符合设计要求及国家现行标准的有关规定; \n' \
                   '2、卷材防水层在转角处、施工缝等部位做法符合设计及施工规范要求; \n' \
                   '3、卷材防水层无空鼓、起泡、褶皱等缺陷,卷材铺贴顺序以及卷材细部处理等均符合设计及规范要求。'

    def CheckItemWord2(self):

        if self.JudegeISNULL('检验批部位') and self.JudegeISNULL(
                '厂家名称') and self.JudegeISNULL('规格/型号') and self.JudegeISNULL('材料名称'):

            return f"1、根据施工图纸{self.project_information['施工图号']}内容,{self.project_information['检验批部位']}保温层采用{self.project_information['厂家名称']}生产的{self.project_information['规格/型号']}的{self.project_information['材料名称']},符合设计要求及国家现行标准的有关规定; \n" \
                   f"2、保温基层平整、坚固、干燥,做法符合设计及施工规范要求; \n3、保温板厚度符合设计要求,粘贴牢固，无剥离现象。"

        else:
            return "1、屋面保温层材料、规格、型号、厚度符合设计要求及国家现行标准的有关规定; \n" \
                   "2、保温基层平整、坚固、干燥,做法符合设计及施工规范要求; \n" \
                   "3、保温板厚度符合设计要求,粘贴牢固，无剥离现象."

    def CheckItemWord3(self):

        if self.JudegeISNULL('混凝土强度'):

            return '1、混凝土设计强度{};\n' \
                   '2、混凝土构件截面尺寸及轴线偏差符合设计及规范要求;\n' \
                   '3、混凝土成型尺寸符合设计要求,混凝土表面无蜂窝、麻面等现象。'.format(
                self.project_information['混凝土强度'])
        else:
            return '1、混凝土强度符合符合设计要求;\n' \
                   '2、混凝土构件截面尺寸及轴线偏差符合设计及规范要求;\n' \
                   '3、混凝土成型尺寸符合设计要求,混凝土表面无蜂窝、麻面等现象。'

    def CheckItemWord4(self):

        if self.JudegeISNULL('施工图号') and self.JudegeISNULL('检验批部位') and self.JudegeISNULL(
                '块材类型') and self.JudegeISNULL(
            '墙厚') and self.JudegeISNULL('块材强度等级') and self.JudegeISNULL('砂浆类型') and self.JudegeISNULL(
            '砂浆强度等级'):
            return f"1、根据施工图纸{self.project_information['施工图号']}内容,{self.project_information['检验批部位']}采用{self.project_information['块材类型']}砌筑墙厚{self.project_information['墙厚']}mm,块材强度等级{self.project_information['块材强度等级']};\n" \
                   f"2、采用{self.project_information['砂浆类型']},砂浆强度等级{self.project_information['砂浆强度等级']};\n" \
                   f"3、拉结筋的规格、数量、间距、埋入长度符合设计要求。\n4、拉结筋的安装方式及位置符合设计要求。"

        else:
            return f"拉结筋的规格、数量、间距、埋入长度符合设计要求。\n2、拉结筋的安装方式及位置符合设计要求。"

    def CheckItemWord5(self):

        if self.JudegeISNULL('检验批部位') and self.JudegeISNULL(
                '安装数量') and self.project_information['防雷引下线规格'] and self.project_information[
            '防雷引下线与接地装置连接方式']:
            return f"1、根据施工图纸{self.project_information['施工图号']}内容," \
                   f"{self.project_information['检验批部位']}避雷引下线" \
                   f"采用{self.project_information['安装数量']}处{self.project_information['防雷引下线规格']}," \
                   f"采用{self.project_information['防雷引下线与接地装置连接方式']}连接方式与室外接地装置连接\n" \
                   f"2、焊接联通可靠、焊缝饱满，无夹渣，汽眼、咬口现象，该项工程安装已完成，符合设计及规范要求"

        return f"1、根据施工图纸{self.project_information['施工图号']}内容," \
                   f"{self.project_information['检验批部位']}避雷引下线安装符合设计及规范要求" \
                   f"2、焊接联通可靠、焊缝饱满，无夹渣，汽眼、咬口现象，该项工程安装已完成，符合设计及规范要求"

    def CheckItemWord6(self):
        return "1.抹灰前，基层已处理干净，抹灰总厚度符合设计要求;\n" \
               "2.在砼墙与加气块墙体间采用耐碱涂塑玻璃纤维网格布防开裂加强措施，耐碱涂塑玻璃纤维网格布与各基体的搭接宽度为100mm;\n" \
               "3.各抹灰层之间及抹灰层与基层之间粘接牢固;\n" \
               "4.抹灰层无脱层、空鼓、裂缝，符合规范要求。"

    def CheckItemWord7(self):
        global  word1,word2,word3
        if self.project_information.get("厂家名称", " "):
            word1 = f'采用{self.project_information.get("厂家名称", " ")}出厂的'

        if self.project_information.get("规格/型号", " "):
            word2 = f'{self.project_information.get("规格/型号", " ")}的'

        if self.project_information.get("材料名称", " "):
            word3 = f'{self.project_information.get("材料名称", " ")}'

        return f'1、该{self.project_information["检验批部位"]}{word1}{word2}{word3}，铝合金门窗框规格、品种符合设计和规范要求;\n' \
               f"2、铝合金门窗框的固定：采用拉片把铝合金门、窗框与墙体连接，拉片与铝合金之间采用螺钉拧紧，拉片与砖墙之间采用用膨胀螺钉固定，拉片与混凝土墙之间采用射钉固定;\n" \
               f"3、铝合金门窗框的防腐处理：铝合金门窗框用塑料薄膜包裹粘贴保护;\n4、防水处理：铝合金窗框与墙体之间缝隙采用胶凝防水材料填塞\n5、填缝：铝合金窗框与墙体之间的缝隙在填塞防水胶凝材料后用水泥砂浆填塞严实;"

    def CheckItemWord8(self):

        if self.JudegeISNULL('施工图号') and self.JudegeISNULL('检验批部位') and self.JudegeISNULL(
                '厂家名称') and self.JudegeISNULL(
            '材料名称') and self.JudegeISNULL('规格/型号'):
            return f"1、根据施工图纸{self.project_information['施工图号']}内容,{self.project_information['检验批部位']}" \
                   f"采用{self.project_information['厂家名称']}生产的{self.project_information['材料名称']}，" \
                   f"规格为{self.project_information['规格/型号']}，施工符合设计要求及国家现行标准的有关规定;\n" \
                   f"2、腻子墙面平整度、垂直度、阴阳角方正符合施工规范要求。\n" \
                   f"3、腻子墙面光洁度合格，墙面无灰尘、开裂、裂缝等缺陷。"

        return ''

    def CheckItemWord9(self):

        if self.JudegeISNULL('检验批部位') and self.JudegeISNULL(
                '厂家名称') and self.JudegeISNULL('饰面板材料名称') and self.JudegeISNULL('规格/型号'):

            return f"1、根据施工图纸{self.project_information['施工图号']}内容,{self.project_information['检验批部位']}" \
                   f"采用{self.project_information['厂家名称']}生产的{self.project_information['饰面板材料名称']}，" \
                   f"规格为{self.project_information['规格/型号']}，施工符合设计要求及国家现行标准的有关规定。\n" \
                   f"2、吊杆、龙骨、吊件的材质、规格符合设计要求\n" \
                   f"3、吊杆、龙骨、吊件的安装牢固,无松动现象。\n" \
                   f"4、吊杆、龙骨、吊件的防腐处理符合设计"
        else:
            return ''

    def CheckItemWord10(self):

        pass

    def CheckItemWord11(self):

        if self.JudegeISNULL('检验批部位') and self.JudegeISNULL(
                '管径') and self.JudegeISNULL('规格/型号') and self.JudegeISNULL('连接方式'):

            return f"1、根据施工图纸{self.project_information['施工图号']}内容,{self.project_information['检验批部位']}的给水管道及配件安装," \
                   f"采用{self.project_information['管径']}{self.project_information['规格/型号']}," \
                   f"连接方式采用{self.project_information['连接方式']},符合设计要求;\n" \
                   f"2、按照设计要求进行强度及严密性水压试验、冲洗和消毒;\n" \
                   f"3、管道的支、吊架安装平整牢固,其间距符合规定,\n" \
                   f"4施工时均按设计规范标准验收进行施工"

        else:
            return

    def CheckItemWord12(self):
        if self.JudegeISNULL('施工图号') and self.JudegeISNULL(
                '施工图号') and self.JudegeISNULL('检验批部位') and self.JudegeISNULL('规格/型号/长度'):
            return f"1、根据施工图纸{self.project_information['施工图号']}内容,{self.project_information['检验批部位']}电线、电缆导管和线槽敷设,采用{self.project_information['规格/型号/长度']},材料规格符合设计及规范要求;\n" \
                   f"2、采用导线穿钢管沿墙及屋顶暗敷，不同回路单独穿管保护;\n" \
                   f"3、电线、电缆导管和线槽敷设,施工时均按设计规范标准验收进行施工;\n"
        return f"1、根据施工图纸{self.project_information['施工图号']}内容,{self.project_information['检验批部位']}电线、电缆导管和线槽敷设,材料规格符合设计及规范要求;\n" \
                   f"2、采用导线穿钢管沿墙及屋顶暗敷，不同回路单独穿管保护;\n" \
                   f"3、电线、电缆导管和线槽敷设,施工时均按设计规范标准验收进行施工;\n"

    def CheckItemWord13(self):

        if self.JudegeISNULL('检验批部位') and self.JudegeISNULL('插座类型/规格/数量') and self.JudegeISNULL(
                '开关类型/规格/数量') and self.JudegeISNULL('施工图号'):
            return f"1、根据施工图纸{self.project_information['施工图号']}的内容,本工程{self.project_information['检验批部位']}开关插座安装,采用{self.project_information['插座类型/规格/数量']} {self.project_information['开关类型/规格/数量']},符合设计要求;\n" \
                   f"2、2.单相三孔、三相四孔及三相五孔插座的接地（ＰＥ）或接零（ＰＥＮ）线接在上孔。插座的接地端子不与零线端子连接。同一场所的三相插座，接线的相序一致。\n" \
                   f"3.接地（ＰＥ）或接零（ＰＥＮ）线在插座间不串联连接\n" \
                   f"4.暗装的插板紧贴墙面，四周无缝隙，安装牢固表面光滑整洁无碎列、划伤，装饰帽齐全。"
        return  f"1、根据施工图纸{self.project_information['施工图号']}的内容,本工程{self.project_information['检验批部位']}开关插座安装符合设计要求;\n" \
                   f"2、2.单相三孔、三相四孔及三相五孔插座的接地（ＰＥ）或接零（ＰＥＮ）线接在上孔。插座的接地端子不与零线端子连接。同一场所的三相插座，接线的相序一致。\n" \
                   f"3.接地（ＰＥ）或接零（ＰＥＮ）线在插座间不串联连接\n" \
                   f"4.暗装的插板紧贴墙面，四周无缝隙，安装牢固表面光滑整洁无碎列、划伤，装饰帽齐全。"

    def CheckItemWord14(self):

        if self.JudegeISNULL('检验批部位') and self.JudegeISNULL('规格/型号') and self.JudegeISNULL(
                '施工图号') and self.JudegeISNULL('安装方式'):
            return f"1、根据{self.project_information['施工图号']},本工程{self.project_information['检验批部位']}的导管敷设规格型号为{self.project_information['规格/型号']},敷设方式采用{self.project_information['安装方式']};\n" \
                   f"2、管道的位置、标高、尺寸、连接接口方式符合设计及规范要求。\n" \
                   f"3、管道铺设过程中,管道内外防腐层无破损,管道内清洁无杂物,基槽内保持干净。"

        return

    def CheckItemWord15(self):

        if self.JudegeISNULL('检验批部位') and self.JudegeISNULL('规格/型号') and self.JudegeISNULL(
                '施工图号') and self.JudegeISNULL('厂家名称'):
            return f"1、根据{self.project_information['施工图号']},本工程{self.project_information['检验批部位']}的地面" \
                   f"采用{self.project_information['厂家名称']}生产,{self.project_information['规格/型号']}," \
                   f"做法符合设计要求；\n" \
                   f"2、面层与下一层的结合牢固,无空鼓。\n" \
                   f"3、踢脚线表面应洁净、高度一致、结合牢固、出墙厚度一致。\n" \
                   f"4、面层表面的坡度符合设计要求,不倒泛水、无积水；与地漏、管道结合处严密牢固，无渗漏。"

        return

    def CheckItemWord16(self):
        pass

    def CheckItemWord17(self):
        
        
        
        if self.JudegeISNULL('检验批部位') and self.JudegeISNULL('规格/型号') and self.JudegeISNULL('材料名称'):
            return f'1、根据{self.project_information["施工图号"]},' \
                   f'本工程{self.project_information["检验批部位"]}接地装置采用{self.project_information["规格/型号"]}' \
                   f'{self.project_information["材料名称"]},符合设计要求;\n' \
                   f'2、接地装置的埋设深度符合设计要求,接地装置的接地电阻符合设计要求;\n' \
                   f'3、接地装置的接头、连接、固定符合设计及规范要求;\n'
        return f'1、根据{self.project_information["施工图号"]},' \
                   f'本工程{self.project_information["检验批部位"]}接地装置符合设计要求;\n' \
                   f'2、接地装置的埋设深度符合设计要求,接地装置的接地电阻符合设计要求;\n' \
                   f'3、接地装置的接头、连接、固定符合设计及规范要求;\n'

    def CheckItemWord18(self):

        if self.JudegeISNULL('检验批部位') and self.JudegeISNULL(
                '建筑物等电位联结的形式、方法、部位及联结导体的材料、截面积'):
            return f'1、根据{self.project_information["施工图号"]},本工程{self.project_information["检验批部位"]}等电位联结采用{self.project_information["建筑物等电位联结的形式、方法、部位及联结导体的材料、截面积"]};\n' \
                   f'2、等电位联结的接头、连接、固定符合设计及规范要求;\n' \
                   f'3、等电位联结的埋设深度符合设计要求,接地装置的接地电阻符合设计要求;\n'

        return  f'1、根据{self.project_information["施工图号"]},本工程{self.project_information["检验批部位"]}等电位联结符合设计及规划要求;\n'\
                f'2、等电位联结的接头、连接、固定符合设计及规范要求;\n' \
                f'3、等电位联结的埋设深度符合设计要求,接地装置的接地电阻符合设计要求;\n'

    def CheckItemWord19(self):
        
        return f'1、所用材料、配件尺寸、品种、规格、型号、数量符合设计及规范要求;\n' \
               f'2、预埋件安装位置、尺寸、间距符合规范及设计要求;\n' \
               f'3、焊接材料品种、规格符合设计要求，焊接尺寸、焊缝观感、外观质量符合设计要求;\n' \
               f'4、钢构件安装的尺寸、位置、间距符合设计要求;\n' \
               f'5、高强度螺栓安装的尺寸。位置、间距符合设计要求;'

    def CheckItemWord20(self):
        
        return f'钢筋的规格、数量、型号、尺寸、锚固长度等符合设计要求及规范规定'
    
    def CheckItemWord21(self):
        
        return f'1、抗裂砂浆所有原材料均有出厂合格证;\n'\
               f'2、抗裂砂浆分两层施工，第一层抹3-4mm，随后进行铺贴耐碱网格布，然后进行第二层抗裂砂浆2-3mm;\n'\
               f'3、抗裂砂浆平整度符合规范要求'
            
    def CheckItemWord22(self):
        
        return f'将5mm抗裂砂浆均匀的抹在保温层表面，立即将裁好的网格布用抹子压入抗裂砂浆内，网格布间搭接小于50mm，网格布无褶皱、空鼓、翘边，两层网格布之间抗裂砂浆饱满。'

    def CheckItemWord23(self):
        
        if self.project_information.get("厂家名称"," "):
            
            word1=f'采用{self.project_information.get("厂家名称"," ")}出厂的'
        
        if self.project_information.get("规格/型号"," "): 
            
            word2=f'{self.project_information.get("规格/型号"," ")}的'
        
        if self.project_information.get("材料名称"," "):
            
            word3=f'{self.project_information.get("材料名称"," ")}'
        
        return   f'1、该{self.project_information["检验批部位"]}{word1}{word2}{word3}，符合设计及规范要求;\n' \
                 f'2、保温层厚度符合设计要求;\n'\
                 f'3、保温层与外墙之间无空隙、空洞、空鼓现象;\n'\
 
    
    def CheckItemWord24(self):
        
        
        if self.project_information.get("厂家名称"," "):
            
            word1=f'采用{self.project_information.get("厂家名称"," ")}出厂的'
        
        if self.project_information.get("规格/型号"," "): 
            
            word2=f'{self.project_information.get("规格/型号"," ")}的'
        
        if self.project_information.get("材料名称"," "):
            
            word3=f'{self.project_information.get("材料名称"," ")}'
                  
        return   f'1、该{self.project_information["检验批部位"]}{word1}{word2}{word3}，符合设计及规范要求;\n' \
                 f'2、基层已清理干净，结构楼地面上无积水、无灰尘、无杂物、无污染;\n' \
                 f'3、用1:2.5水泥砂浆找平已经完成。与基层粘结牢固，表面平整、光滑，无疏松、起砂、掉皮现象，符合设计及规范要求;\n' \
                 f'4、交接处和转角处，管根阴阳角已做成圆弧状，符合做防水的要求;隐检内容已做完，请予以检查。'

